package com.practice.search;

import java.util.ArrayList;
import java.util.HashMap;

public class DictionaryManager {
	HashMap<String, ArrayList<String>> prefixMap;
	
	public DictionaryManager() {
		prefixMap = new HashMap<String, ArrayList<String>>();
	}
	
	public void addWord(String word) {
		put("", word);
		put(word.substring(0,1), word);
		put(word.substring(0,2), word);
	}
	
	public ArrayList<String> wordsBeginWith(String prefix) {
		if (prefix.length() < 3) return prefixMap.get(prefix);
		String p2 = prefix.substring(0, 2);
		ArrayList<String> values = prefixMap.get(p2);
		ArrayList<String> result = new ArrayList<String>();
		for (String value : values) {
			if (value.startsWith(prefix)) result.add(value);
		}
		return result;
	}
	
	private void put(String prefix, String word) {
		if (prefixMap.containsKey(prefix)) {
			prefixMap.get(prefix).add(word);
		}
		else {
			ArrayList<String> list = new ArrayList<String>();
			list.add(word);
			prefixMap.put(prefix, list);
		}
	}
}
